define([
    "UtilDir/util",
    "UtilDir/tool",
    "UtilDir/searchBlock",
    "EasyUI", "EasyUI-lang"
], function (Util, Tool, SearchBlock, Theme) {
    var divisionId = '';
    var divisionName = '';
    var getZwController = function () {
        return getServer() + "/platform/org/zws/";
    };
    /**
     * 页面初始化
     */
    var init = function () {
        initSearchBlock();
        // gettitleData();
        initDivision();
        queryBtnBind();
        //浏览器窗口大小变化后，表格宽度自适应
        $(window).resize(function () {
            createZwGrid();
        });

    };
    var initSearchBlock = function () {
        SearchBlock.init("searchBlock");
        require(["jquery", "Date", "DateCN", "css!DateCss"], function ($) {
            $("#complex1").datetimepicker({
                //设置使用语言：cn是自定义的中文版本，还可以扩展其他语言版本
                language: "cn",
                //输出格式化
                format: 'yyyy-mm-dd',
                //直接选择‘今天’
                todayBtn: true,
                //设置最精确的时间选择视图
                minView: 'month',
                //高亮当天日期
                todayHighlight: true,
                //选择完毕后自动关闭
                autoclose: true
            });
            /* 删除按钮 */
            $("#complex_show1").on("click", function () {
                $('#complex1').datetimepicker('show');
            });
            /* 显示按钮 */
            $("#complex_del1").on("click", function () {
                $("#complex1").val("");
            });

            $("#complex2").datetimepicker({
                //设置使用语言：cn是自定义的中文版本，还可以扩展其他语言版本
                language: "cn",
                //输出格式化
                format: 'yyyy-mm-dd',
                //直接选择‘今天’
                todayBtn: true,
                //设置最精确的时间选择视图
                minView: 'month',
                //高亮当天日期
                todayHighlight: true,
                //选择完毕后自动关闭
                autoclose: true
            });
            /* 删除按钮 */
            $("#complex_show2").on("click", function () {
                $('#complex2').datetimepicker('show');
            });
            /* 显示按钮 */
            $("#complex_del2").on("click", function () {
                $("#complex2").val("");
            });
        })
    };

    // 标题--概要数据
    var gettitleData = function () {
        $.ajax({
            url: getServer() + "/fw/taskForm/general/provice/title",
            type: "get",
            success: function (data) {
                $("#year").text(data.data.year);
                $("#month").text(data.data.month);
                $("#day").text(data.data.day);
                $("#totalNum").text(data.data.totalNum);
                $("#totalArea").text(data.data.totalArea);
                $("#proviceNum").text(data.data.proviceNum);
                $("#cityNum").text(data.data.cityNum);
                $("#cityTotalNum").text(data.data.cityTotalNum);
                $("#cityTotalArea").text(data.data.cityTotalArea);
                $("#noCityTotalNum").text(data.data.noCityTotalNum);
                $("#noCityTotalArea").text(data.data.noCityTotalArea);
                $("#villageTotalNum").text(data.data.villageTotalNum);
                $("#villageTotalArea").text(data.data.villageTotalArea);
                $("#villagePubTotalNum").text(data.data.villagePubTotalNum);
                $("#villagePubTotalArea").text(data.data.villagePubTotalArea);
            }
        });
    }
    // 查询日期--校验
    var queryBtnBind = function () {
        $("#complex1").change(function () {
            if ($("#complex1").val() != "" && $("#complex2").val() != "") {
                if ($("#complex1").val() > $("#complex2").val()) {
                    Util.alert("开始日期必须小于等于结束日期", function () {
                        $("#complex1").val("");
                        $("#complex2").val("");
                    });
                    return;
                }
            }
        });
        $("#complex2").change(function () {
            if ($("#complex1").val() != "" && $("#complex2").val() != "") {
                if ($("#complex1").val() > $("#complex2").val()) {
                    Util.alert("开始日期必须小于等于结束日期", function () {
                        $("#complex1").val("");
                        $("#complex2").val("");
                    });
                    return;
                }
            }
        });
        $("#btnSearch").click(function () {
            createZwGrid();
            queryCharData();
        });
        $("#btnReset").click(function () {
            $("#complex1").val("");
            $("#complex2").val("");
            $("#status").val("");
        });
    };
    // 31省--表格数据
    var createZwGrid = function () {
        // 先初始化省数据
        $("#zwGrid").datagrid({
            url: getServer() + "/fw/taskForm/general/city",
            remoteSort: false,
            method: "GET",
            fitColumns: true,
            autoRowHeight: false,
            showFooter: true,
            columns: [[
                {field: 'provice', title: '省份', width: '8.5%', align: 'center'},
                {field: 'city', title: '地市级', width: '8.5%', align: 'center'},
                {
                    field: 'cityTotalNum', title: '城镇住宅采集栋数', width: '8%', sum: 'true', align: 'center', sortable: true,
                    sorter: function (a, b) {
                        return (a > b ? 1 : -1);
                    }
                },
                {
                    field: 'noCityTotalNum',
                    title: '城镇非住宅采集栋数',
                    width: '9%',
                    sum: 'true',
                    align: 'center',
                    sortable: true,
                    sorter: function (a, b) {
                        return (a > b ? 1 : -1);
                    }
                },
                {
                    field: 'villageTotalNum',
                    title: '农村住宅采集栋数',
                    width: '8%',
                    sum: 'true',
                    align: 'center',
                    sortable: true,
                    sorter: function (a, b) {
                        return (a > b ? 1 : -1);
                    }
                },
                {
                    field: 'villagePubTotalNum',
                    title: '农村公共建筑采集栋数',
                    width: '9%',
                    sum: 'true',
                    align: 'center',
                    sortable: true,
                    sorter: function (a, b) {
                        return (a > b ? 1 : -1);
                    }
                },
                {
                    field: 'totalNum',
                    title: '合计栋数',
                    width: '7.7%',
                    sum: 'true',
                    align: 'center',
                    sortable: true,
                    sorter: function (a, b) {
                        return (a > b ? 1 : -1);
                    },
                    styler: function (value, row, index) {
                        return 'background-color:#eaf2ff;';
                    }
                },
                {
                    field: 'cityTotalArea',
                    title: '城镇住宅采集面积',
                    width: '8%',
                    sum: 'true',
                    align: 'center',
                    sortable: true,
                    sorter: function (a, b) {
                        return (a > b ? 1 : -1);
                    }
                },
                {
                    field: 'noCityTotalArea',
                    title: '城镇非住宅采集面积',
                    width: '9%',
                    sum: 'true',
                    align: 'center',
                    sortable: true,
                    sorter: function (a, b) {
                        return (a > b ? 1 : -1);
                    }
                },
                {
                    field: 'villageTotalArea',
                    title: '农村住宅采集面积',
                    width: '8%',
                    sum: 'true',
                    align: 'center',
                    sortable: true,
                    sorter: function (a, b) {
                        return (a > b ? 1 : -1);
                    }
                },
                {
                    field: 'villagePubTotalArea',
                    title: '农村公共建筑采集面积',
                    width: '9%',
                    sum: 'true',
                    align: 'center',
                    sortable: true,
                    sorter: function (a, b) {
                        return (a > b ? 1 : -1);
                    }
                },
                {
                    field: 'totalArea',
                    title: '合计面积',
                    width: '7.9%',
                    sum: 'true',
                    align: 'center',
                    sortable: true,
                    sorter: function (a, b) {
                        return (a > b ? 1 : -1);
                    },
                    styler: function (value, row, index) {
                        return 'background-color:#eaf2ff;';
                    }
                }
            ]],
            onLoadSuccess: function (data) {
                console.log(data);
                $('#zwGrid').datagrid('statistics'); //合计
            },
            queryParams: {
                divisionName: divisionName,
                divisionId: divisionId,
                beginDate: $("#complex1").val(),
                endDate: $("#complex2").val(),
                status: $("#status").val()
            },
        });
    };
    // 表格拓展--排序和计算总和
    $.extend($.fn.datagrid.methods, {
        statistics: function (jq) {
            var opt = $(jq).datagrid('options').columns;
            var rows = $(jq).datagrid("getRows");
            var footer = new Array();
            footer['sum'] = "";
            for (var i = 0; i < opt[0].length; i++) {
                if (opt[0][i].sum) {
                    footer['sum'] = footer['sum'] + sum(opt[0][i].field, 1) + ',';
                }
            }
            var footerObj = new Array();
            if (footer['sum'] != "") {
                var tmp = '{' + footer['sum'].substring(0, footer['sum'].length - 1) + "}";
                var obj = eval('(' + tmp + ')');
                if (obj[opt[0][0].field] == undefined) {
                    footer['sum'] += '"' + opt[0][0].field + '":"<b>合计:</b>"';//第0列显示为合计
                    obj = eval('({' + footer['sum'] + '})');
                } else {
                    obj[opt[0][0].field] = "<b>合计:</b>" + obj[opt[0][0].field];
                }
                footerObj.push(obj);
            }
            if (footerObj.length > 0) {
                $(jq).datagrid('reloadFooter', footerObj);
            }

            function sum(filed) {
                var sumNum = 0;
                var str = "";
                for (var i = 0; i < rows.length; i++) {
                    var num = rows[i][filed];
                    sumNum += Number(num);
                }
                return '"' + filed + '":"' + sumNum.toFixed(2) + '"';
            }
        }
    });
    // 查询--柱状图数据
    var queryCharData = function () {
        $.ajax({
            url: getServer() + "/fw/taskForm/general/cityChart",
            type: "get",
            data: {
                divisionName: divisionName,
                divisionId: divisionId,
                beginDate: $("#complex1").val(),
                endDate: $("#complex2").val(),
                status: $("#status").val()
            },
            success: function (data) {
                console.log("charData");
                console.log(data);
                // 柱状图
                initNumEcharts(data);
                initAreaEcharts(data);
            }
        });
    }
    // 栋数柱状图
    var initNumEcharts = function (charData) {
        require(["Echarts"], function (echarts) {
            // 基于准备好的dom，初始化echarts实例
            var myChart = echarts.init(document.getElementById('mainNum'));

            // 指定图表的配置项和数据
            var option = {
                color: ['#003366', '#006699', '#4cabce', '#e5323e'],
                tooltip: {
                    trigger: 'axis',
                    axisPointer: {
                        type: 'shadow'
                    }
                },
                grid: {
                    left: '1%',
                    right: '1%',
                    bottom: '1%',
                    containLabel: true
                },
                legend: {
                    data: ['城镇住宅', '城镇非住宅', '农村住宅', '农村公共建筑']
                },
                xAxis: [
                    {
                        type: 'category',
                        axisTick: {show: false},
                        axisLabel: {
                            interval: 0,
                            rotate: 40
                        },
                        data: charData.cities
                    }
                ],
                yAxis: [
                    {
                        name: '采集数量/栋',
                        type: 'value'
                    }
                ],
                series: [
                    {
                        name: '城镇住宅',
                        type: 'bar',
                        barGap: 0,
                        data: charData.cityNum
                    },
                    {
                        name: '城镇非住宅',
                        type: 'bar',
                        data: charData.noCityNum
                    },
                    {
                        name: '农村住宅',
                        type: 'bar',
                        data: charData.villageNum
                    },
                    {
                        name: '农村公共建筑',
                        type: 'bar',
                        data: charData.villagePubNum
                    }
                ]
            };

            // 使用刚指定的配置项和数据显示图表。
            myChart.setOption(option);
        })
    };
    // 面积柱状图
    var initAreaEcharts = function (charData) {
        require(["Echarts"], function (echarts) {
            // 基于准备好的dom，初始化echarts实例
            var myChart = echarts.init(document.getElementById('mainArea'));

            // 指定图表的配置项和数据
            var option = {
                color: ['#003366', '#006699', '#4cabce', '#e5323e'],
                tooltip: {
                    trigger: 'axis',
                    axisPointer: {
                        type: 'shadow'
                    }
                },
                grid: {
                    left: '1%',
                    right: '1%',
                    bottom: '1%',
                    containLabel: true
                },
                legend: {
                    data: ['城镇住宅', '城镇非住宅', '农村住宅', '农村公共建筑']
                },
                xAxis: [
                    {
                        type: 'category',
                        axisTick: {show: false},
                        axisLabel: {
                            interval: 0,
                            rotate: 40
                        },
                        data: charData.cities
                    }
                ],
                yAxis: [
                    {
                        name: '采集面积/㎡',
                        type: 'value'
                    }
                ],
                series: [
                    {
                        name: '城镇住宅',
                        type: 'bar',
                        barGap: 0,
                        data: charData.cityArea
                    },
                    {
                        name: '城镇非住宅',
                        type: 'bar',
                        data: charData.noCityArea
                    },
                    {
                        name: '农村住宅',
                        type: 'bar',
                        data: charData.villageArea
                    },
                    {
                        name: '农村公共建筑',
                        type: 'bar',
                        data: charData.villagePubArea
                    }
                ]
            };

            // 使用刚指定的配置项和数据显示图表。
            myChart.setOption(option);
        })
    };

    // 管理员查看所有的省
    var province = function (html) {
        $.ajax({
            url: "/app/divisions/root/subdivisions",
            contentType: "application/json",
            type: "get",
            success: function (data) {
                console.log(data);
                $.each(data, function (idx, item) {
                    html += "<option value='" + item.divisionName + "' exid='" + item.divisionId + "'>" + item.divisionName + "</option>";
                });
                $("#belongtoProvince").append(html);
                // 赋值初始值
                divisionId = data[0].divisionId;
                divisionName = data[0].divisionName
                // 回显数据
                $("#belongtoProvince").val(divisionName);
                // 表格
                createZwGrid();
                // 柱状图-目前注释掉，后期可能需要
                // 柱状图
                //queryCharData();
            }
        });
        $("#belongtoProvince").change(function () {
            divisionId = $(this).find("option:selected").attr("exid");
            divisionName = $(this).find("option:selected").attr("value");
            console.log(divisionId);
            console.log(divisionName);
        });
    }
    // 初始化省份
    var initDivision = function () {
        $.ajax({
            url: getServer() + "/fw/taskForm/user/division",
            contentType: "application/json",
            type: "get",
            success: function (data) {
                console.log(data);
                var html = "";
                if (data.message == '超级管理员') {
                    province(html);
                } else {
                    debugger;
                    html = "<option value='" + data.divisionName + "' exid='" + data.divisionId + "'>" + data.divisionName + "</option>";
                    $("#belongtoProvince").append(html);
                    $("#belongtoProvince").attr("disabled", true);
                    divisionName = data.divisionName;
                    divisionId = data.divisionId;
                    $("#belongtoProvince").val(divisionName);
                    // 表格
                    createZwGrid();
                    // 柱状图-目前注释掉，后期可能需要
                    // 柱状图
                    //queryCharData();
                }
            }
        });
    }

    // 校验表单
    var formValidator = function () {
        $("#zwForm").validate({
            rules: {
                zwName: {
                    required: true,
                    maxlength: 100
                },
                zwCode: {
                    required: true,
                    maxlength: 32,
                    remote: {
                        type: "GET",
                        url: getZwController() + "validateZwCode",
                        data: {  //要传递的参数
                            zwId: function () {
                                return $("#zwForm #zwId").val();
                            },
                            zwCode: function () {
                                return $("#zwForm #zwCode").val();
                            }
                        }
                    }
                },
                sort: {
                    digits: true,
                    min: 1,
                    max: 255
                },
                description: {
                    maxlength: 256
                }
            },
            messages: {
                zwName: {
                    required: "职务名称不允许为空!",
                    maxlength: "职务名称长度不可以超过100"
                },
                zwCode: {
                    required: "职务编码不允许为空!",
                    maxlength: "职务编码长度不可以超过30",
                    remote: "职务编码重复，请重新输入"
                },
                sort: "顺序号必须是小于256的正整数",
                description: "描述长度不可以超过256"
            }
        });
    };

    return {
        init: init
    };
});
